package org.aeon.gamechatnest.mapper;

import org.aeon.gamechatnest.pojo.Friend;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author 89342
 * @description 针对表【friend(好友联系表)】的数据库操作Mapper
 * @createDate 2024-05-09 09:25:50
 * @Entity org.aeon.gamechatnest.pojo.Friend
 */
@Mapper
public interface FriendMapper {
    /**
     * 新增
     *
     * @param friend 好友
     * @return 影响行数
     */
    int add(Friend friend);

    /**
     * 根据用户id查询好友（全部）
     *
     * @param userId 用户id
     * @return 好友id列表
     */
    List<Long> getByUserId(@Param("userId") Long userId);

    /**
     * 根据双方id查询好友关系
     *
     * @param user1 用户1
     * @param user2 用户2
     * @return 好友关系实体
     */
    Friend getByBothSides(Long user1, Long user2);

    /**
     * 通过双方id删除好友
     *
     * @param userId   用户id
     * @param friendId 好友id
     * @return 影响行数
     */
    @Delete("""
            delete from friend
            where (from_user = #{userId} and to_user = #{friendId})
                or (to_user = #{userId} and from_user = #{friendId})
            """)
    int deleteByBothSides(Long userId, Long friendId);
}
